/**
 * @Description: 整体配置, 只能在浏览器端运行
 * @Author 卞鹏飞 <228443632@qq.com>
 * @create 2022/12/19 10:53
 */
import { omit, parseJsonNoError, template } from 'sf-utils2'
import envTemplateVars from '@shared/utils/env-template-vars.js' //  环境模版变量
import { decode } from 'js-base64'

// types
import type { TProfile, TProxyEntity, TEnvEntity } from '@root/types/profile.ts'

declare global {
  interface Window {
    $globalConfig: any
    // $sharedRepo: any
    $debugRouter: any
    __enableDevtool__: any
  }
}
// 解析模版
const parseTemplate = (string) => parseJsonNoError(template(decode(string), envTemplateVars))

const IS_PRO = process.env.NODE_ENV === 'production' // 是否是生产环境
const envMap = parseTemplate(process.env.ENV_MAP) as TProfile['envMap'] // 环境映射
const APP_MODE = window?.$globalConfig?.APP_MODE || process.env.APP_MODE || 'localDev'
const env = (envMap[APP_MODE] || {}) as TEnvEntity // 当前环境配置
const proxy = parseTemplate(process.env.ENV_PROXY) as TProxyEntity

const profile: TProfile = {
  ...env,
  IS_PRO, // 是否是生产环境  用于区分是否打包
  APP_MODE, // 当前应用环境 sit dev uat local
  envMap,
  proxy,
  // 过滤的接口, 不需要走权限
  whiteApis: [],
  microAppUrlMap: {
    // 没有标题的微应用映射标题
  },

  // 需要走权限的 或者设置 route路由上meta对象里加上auth: true
  authComponentPaths: [], // 权限

  ...omit(window.$globalConfig || {}, [`APP_MODE`])
}

// 兼容处理
console.log(`[平台当前上下文配置：]`, { profile })
export default profile
